const fs = require('fs');
const path = require('path');
const { execSync } = require('child_process');

// 确保dist目录存在
const distDir = path.resolve(__dirname, '../dist');
if (!fs.existsSync(distDir)) {
  fs.mkdirSync(distDir, { recursive: true });
}

// 收集所有CSS文件
const cssFiles = [];

function collectCSSFiles(dir) {
  const files = fs.readdirSync(dir);
  
  for (const file of files) {
    const filePath = path.join(dir, file);
    const stat = fs.statSync(filePath);
    
    if (stat.isDirectory()) {
      collectCSSFiles(filePath);
    } else if (file.endsWith('.css')) {
      cssFiles.push(filePath);
    }
  }
}

// 从src目录收集CSS文件
collectCSSFiles(path.resolve(__dirname, '../src'));

// 合并所有CSS文件
let combinedCSS = '';

// 首先添加variables.css
const variablesPath = path.resolve(__dirname, '../src/styles/variables.css');
if (fs.existsSync(variablesPath)) {
  combinedCSS += fs.readFileSync(variablesPath, 'utf8') + '\n';
}

// 然后添加其他CSS文件
for (const cssFile of cssFiles) {
  if (cssFile !== variablesPath) {
    let content = fs.readFileSync(cssFile, 'utf8');
    
    // 处理CSS文件中的相对导入
    content = content.replace(/@import\s+['"]([^'"]+\.css)['"];/g, (match, importPath) => {
      // 如果是相对路径，解析为绝对路径并读取内容
      if (importPath.startsWith('./') || importPath.startsWith('../')) {
        const importFullPath = path.resolve(path.dirname(cssFile), importPath);
        if (fs.existsSync(importFullPath)) {
          return fs.readFileSync(importFullPath, 'utf8');
        }
      }
      // 如果无法解析，保留原样但移除导入语句
      return '';
    });
    
    combinedCSS += content + '\n';
  }
}

// 写入合并的CSS文件
const outputPath = path.join(distDir, 'zss-lit-ui.css');
fs.writeFileSync(outputPath, combinedCSS, 'utf8');

// 使用clean-css-cli压缩CSS
const minifyCmd = `npx clean-css-cli ${outputPath} -o ${path.join(distDir, 'zss-lit-ui.min.css')}`;

try {
  execSync(minifyCmd, { stdio: 'inherit' });
  console.log('CSS文件构建完成！');
} catch (error) {
  console.error('CSS压缩失败:', error);
  // 如果压缩失败，至少复制未压缩版本
  fs.copyFileSync(outputPath, path.join(distDir, 'zss-lit-ui.min.css'));
  console.log('已生成未压缩的CSS文件');
}